www.gusucode.com > vc串口通信程序,它是得到51单片机传来的 数据 > vc串口通信程序,它是得到51单片机传来的 数据/vb chuank.txt
void CIoView::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); " if(this->m_ctrMscom.GetPortOpen()) "m_ctrMscom.SetPortOpen(FALSE); " m_ctrMscom.SetCommPort(1); //选择com1 if( !m_ctrMscom.GetPortOpen()) m_ctrMscom.SetPortOpen(true);//打开串口 else AfxMessageBox("cannot open serial port"); " m_ctrMscom.SetSettings("9600,n,8,1"); //波特率9600,无校验,8个数据位,1个停止位 " m_ctrMscom.SetInputMode(1); // 以二进制方式检取数据 m_ctrMscom.SetRThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 m_ctrMscom.SetInputLen(0); //设置当前接收区数据长度为0 m_ctrMscom.GetInput();//先预读缓冲区以清除残留数据 " " } oncomm事件函数: void CIoView::OnOnCommMscomm1() { VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed. CString strtemp; if(this->m_ctrMscom.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符 { //以下你可以根据自己的通信协议加入处理代码 variant_inp=m_ctrMscom.GetInput(); //读缓冲区 safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); //得到有效数据长度 for(k=0;k<len;k++) safearray_inp.GetElement(&k,rxdata+k); //转换为BYTE型数组 for(k=0;k<len;k++) //将数组转换为Cstring型变量 { BYTE bt=*(char*)(rxdata+k); //字符型 strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放 this->m_strReceive+=strtemp; //加入接收编辑框对应字符串 } } "UpdateData(FALSE); //更新编辑框内容 }